파이썬 코딩의 기술 | 1장 파이썬답게 생각하기

파이썬 코딩의 기술 | 1장 파이썬답게 생각하기

날짜
Dec 30, 2023
태그
python
설명
Effective Python Better way 90
 
파이썬다운 스타일은 컴파일러가 엄격히 통제하거나 사용하라고 강요하는 스타일이 아니다. 언어를 사용하고 서로 협업하는 과정중에 자연스럽게 생겨난 것이다. 파이썬의 선(The Zen of Python)을 보면 파이썬의 기본 철학을 확인할 수 있다.
 

Better way1. 사용 중인 파이썬 버전을 확인하자

 
python --version python3 --version
파이썬 버전 체크
  • 파이썬 2는 사용하지 말자. 2020년부터 더 이상 지원되지 않는다.
 
 

Better way2. PEP 8 스타일 가이드를 따르자

 
일관된 스타일은 많은 이점을 준다. 더 친숙한 검색과 가독성을 향상시킨다.
 
공백
  • 탭 대신 스페이스를 사용해 들여쓰기를 하자
  • 문법적으로 중요한 들여쓰기에는 4칸 스페이스를 사용하자
  • 라인 길이는 79개 문자 이하여야 한다.
  • 긴 식을 다음줄에 이어서 쓸 경우에는 일반적인 들여쓰기보다 4칸 스페이스를 더 들여써야 한다.
  • 파일 안에서 각 함수와 클래스 사이에는 빈 줄을 두 줄 넣어라.
  • 클래스 안에서 메서드와 메서드 사이에는 빈 줄을 한 줄 넣어라.
  • 딕셔너리에서 키와 콜론 사이에는 공백을 넣지 않고, 한 줄에 키와 값을 같이 넣는 경우에는 콜론 다음에 스페이스를 하나 넣는다.
  • 변수 대입에서 = 전후에는 스페이스를 하나씩만 넣는다.
  • 타입 표기를 덧붙이는 경우에는 변수 이름과 콜론 사이에 공백을 넣지 않도록 주의하고, 콜론과 타입 정보 사이에는 스페이스를 하나 넣어라.
 
명명규약
  • 함수, 변수, 애트리뷰트는 lowercase_underscore 처럼 소문자와 밑줄을 사용한다(snake case)
  • 보호되어야 하는 인스턴스 애트리뷰트는 _leading_underscore 처럼 밑줄로 시작한다.
  • 비공개 인스턴스 애트리뷰트는 __leading_underscore 처럼 두 개의 밑줄로 시작한다.
  • 클래스는 CapotalizedWord 처럼 여러 단어를 이어 붙일때 각 단어의 첫글자를 대문자로 만든다(PascalCase)
  • 모듈 수준의 상수는 ALL_CAPS 처럼 모든 글자를 대문자로 하고 단어와 단어 사이는 밑줄로 연결한다.
  • 클래스에 들어있는 인스턴스 메서드는 호출 대상 객체가 가리키는 첫번째 인자의 이름으로 반드시 self 를 사용해야 한다.
  • 클래스 메서드는 클래스를 가리키는 첫 번째 인자의 이름으로 반드시 cls 를 사용해야 한다.
 
식과 문
‘문제를 해결할 명백한 방법이 하나 있으며, 가급적이면 유일해야 한다’ - The Zen of Python
  • 긍정적인 식을 부정하기 말고(if not a is b) 부정을 내부에 넣어라(if a is not b)
  • 빈 컨테이너나 시퀀스([], ‘’) 등을 검사할 때는 길이를 0과 비교(if len(a) == 0)하지 말자. 빈 컨테이너나 시퀀스 값이 암묵적으로 False로 취급 된다는 사실을 활용해(if not container)라는 조건문을 사용하자.
  • 한 줄짜리 if, while, for, except 문을 사용하지 말자. 명확성을 위해 각 부분을 여러줄에 나눠 배치하자.
  • 식을 한 줄 안에 다 쓸 수 없는 경우는 식을 괄호로 둘러싸고 줄바꿈과 들여쓰기를 추가해서 읽기 쉽게 만들자.
  • 여러 줄에 걸쳐 식을 쓸때는 줄이 계속된다는 표시를 하는 \ 문자보다는 괄호를 사용하자.
 
임포트
  • import 문을 항상 파일 맨 앞에 위치시켜라.
  • 모듈을 임포트할 때는 절대적인 이름을 사용하자.
  • 반드시 상대적인 경로로 임포트 해야하는 경우에는 from . import foo 처럼 명시적인 구문을 사용하자.
  • 임포트를 적을 때는 표준 라이브러리 모듈, 서브 파티 모듈, 직접 만든 모듈 순서로 섹션을 나누자. 각 섹션에는 알파벳 순서대로 정렬하자.
 

Better way3. byte와 str의 차이를 알아두라

 
파이썬에는 문자열 데이터의 시퀀스를 표현하는 두가지 타입이 있다. byte와 str이다.
 
byte 타입의 인스턴스에는 부호가 없는 8바이트 데이터가 그대로 들어간다.
a = b'h\x65llo' print(list(a)) print(a) >>> [104, 101, 108, 108, 111] b.'hello'
 
str 타입의 인스턴스에는 사람이 사용하는 언어의 문자를 표현하는 유니코드 코드 포인트가 들어있다.
a = 'a\u0300 propos' print(list(a)) print(a) >>> ['a', ''', ' ', 'p', 'r', 'o', 'p'. 'o', 's'] a'propos
 
str 인스턴스에는 이진 인코딩이 없고 byte에는 직접 대응하는 텍스트 인코딩이 없다.

댓글

guest